home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-03-04 | 62.0 KB | 1,514 lines |
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C ----------------------------------------------------------------------
- C
- C P R O C E S - Determine current statement segmentation and
- C instrumentation and create output to
- C statement type summary file, annotated listing
- C and temporary instrumented program file.
- C
-
- SUBROUTINE PROCES
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C KEYWORD ID VARIABLES
- COMMON / KEYSC / KAGOG, KAIFG, KASMTG,
- * KASSNG, KBACKG, KBIFG, KBLOKG,
- * KCALLG, KCFUNG, KCGOG, KCHARG,
- * KCLOSG, KCMPXG, KCOMNG, KCONTG,
- * KDATAG, KDBLEG, KDFUNG, KDIMNG,
- * KDOG, KELSEG, KELSFG, KENDFG,
- * KENDG, KENDIG, KEQIVG, KEXTLG,
- * KFORMG, KIFUNG, KIMPLG, KINQRG,
- * KINSCG, KINTEG, KLFUNG, KLIFG,
- * KLOGCG, KNONEG, KNTRYG, KOPENG,
- * KPARAG, KPAUSG, KPRNTG, KPROGG,
- * KREADG, KREALG, KRETNG, KRFUNG,
- * KSAVEG, KSFUNG, KSTOPG, KSUBRG,
- * KUFUNG, KUGOG, KWINDG, KWRITG,
- * KXFUNG, LASRTG, LCMNTG, LERRG,
- * LLINEG, LSTMTG
-
- INTEGER KAGOG,KAIFG,KASMTG,KASSNG,KBACKG,KBIFG,KBLOKG,KCALLG,
- + KCFUNG,KCGOG,KCHARG,KCLOSG,KCMPXG,KCOMNG,KCONTG,KDATAG,
- + KDBLEG,KDFUNG,KDIMNG,KDOG,KELSEG,KELSFG,KENDFG,KENDG,
- + KENDIG,KEQIVG,KEXTLG,KFORMG,KIFUNG,KIMPLG,KINQRG,KINSCG,
- + KINTEG,KLFUNG,KLIFG,KLOGCG,KNONEG,KNTRYG,KOPENG,KPARAG,
- + KPAUSG,KPRNTG,KPROGG,KREADG,KREALG,KRETNG,KRFUNG,KSAVEG,
- + KSFUNG,KSTOPG,KSUNRG,KUUNG,KUGOG,KWINDG,KWRITG,KXFUNG,
- + LASRTG,LCMNTG,LERRG,LLINEG,LSTMTG
- INTEGER KUFUNG,KSUBRG
-
- SAVE /KEYSC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C MAIN INTEGER STORAGE ARRAYS
- C MAXLBG = Maximum number of DO statement labels per routine
- INTEGER MAXLBG
- PARAMETER(MAXLBG=100)
- COMMON / WORKC / IABEG(201), ICRTNG(200), IPCNTG(75),
- * IRCNTG(75), ISBEG(201), ISCNTG(75), INSTG(250),
- * KEXECG(75), LABG(2,MAXLBG), KTOKG(81)
- INTEGER IABEG,ICRTNG,IPCNTG,IRCNTG,ISBEG,ISCNTG,INSTG,
- + KEXECG,LABG,KTOKG
- SAVE /WORKC/
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/TOKENS/TOKTYP,TOKLEN,TXTPTR,TOKEN,NTOKSS,ISTTXT,ISTPTR,
- + MAXICH
- INTEGER TOKTYP(800),TOKLEN(800),TXTPTR(800),
- + TOKEN,NTOKSS,ISTTXT(1322+800),ISTPTR(800),
- + MAXICH
-
- SAVE /TOKENS/
-
- C
- C TOKTYP = array of token types for current statement
- C TOKLEN = parallel array of lengths of associated text strings
- C TXTPTR = parallel array of pointers into ISTMG character array of text
- C TOKEN = Current token number within statement being processed
- C NTOKSS = Number of tokens in statement
- C ISTTXT = IST text of token as read in before being converted by ZTOKTX
- C ISTPTR = parallel array (to TOKTYP) of pointers into ISTTXT
- C MAXICH = Last character used in ISTTXT array
- C
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C Option Settings
- COMMON /OPTSC/ INHSTG,INTRAG,ITHSTG,ITLSTG,ITTRAG,MCIRCG,
- + MTREQG,TIEG,ITRUNG
-
- INTEGER INHSTG,INTRAG,ITHSTG,ITLSTG,ITTRAG,MCIRCG,MTREQG,
- + ITRUNG
- LOGICAL TIEG
-
- SAVE /OPTSC/
-
-
- C If previous type = END, start new routine.
- IF (LTYPEG.EQ.KENDG) CALL INITRS
- C Insert pass1 common block marker in scratch file
- IF (.NOT.INSRTG) CALL INSRTS
- C Is statement executable?
- IF (KEXECG(ITYPEG).EQ.1) THEN
- C First executable gets specially treated
- IF (.NOT. EXECG) CALL EXECS
- C Get and check statement label
- CALL LABCKS
- ELSE
- C Ignore labels on unexecutable statements
- LABFLG = 0
- END IF
- C Process statement by type
- IF (BLKDTG .AND. ITYPEG.NE.KENDG) THEN
- C Current routine is BLOCK DATA
- SEGMTG = .FALSE.
- CALL OUTS
- ELSE IF (ITYPEG.EQ.KLIFG) THEN
- C Logical IF. Special instrumentation and look for function calls.
- CALL PLIFS
- ELSE IF (ITYPEG.EQ.KELSFG) THEN
- C ELSE IF. Special instrumentation.
- CALL PELSFS
- ELSE IF (ITYPEG .EQ. KELSEG .OR. ITYPEG .EQ. KENDIG) THEN
- C ELSE/END IF. Instrument after but include in count for next segment.
- CALL SEGMTS(.TRUE.)
- CALL OUTANS(NMSEG)
- CALL INSOUT
- CALL OUTSGS(NMSEG)
- SEGMTG = .FALSE.
- ELSE IF (ITYPEG.EQ.KBACKG .OR. ITYPEG.EQ.KCLOSG .OR.
- + ITYPEG.EQ.KENDFG .OR. ITYPEG.EQ.KINQRG .OR.
- + ITYPEG.EQ.KOPENG .OR. ITYPEG.EQ.KREADG .OR.
- + ITYPEG.EQ.KWINDG .OR. ITYPEG.EQ.KWRITG) THEN
- C I/O. Look for END= or ERR=.
- CALL PIOS
- ELSE IF (ITYPEG.EQ.KCALLG) THEN
- C CALL. Look for externals and alternate returns.
- CALL PCALLS
- ELSE IF (ITYPEG.EQ.KDOG) THEN
- C DO. Pick up ending label.
- CALL PDOS
- ELSE IF (ITYPEG.EQ.KSTOPG) THEN
- C STOP. Special instrumentation for terminators.
- CALL PSTOPS
- ELSE IF (ITYPEG.EQ.KENDG) THEN
- C END. Check for routine termination and summarize routine for
- c statement type summary file.
- CALL PENDS
- ELSE IF (ITYPEG.EQ.KCHARG .OR. ITYPEG.EQ.KCOMNG .OR.
- + ITYPEG.EQ.KCMPXG .OR. ITYPEG.EQ.KDIMNG .OR.
- + ITYPEG.EQ.KDBLEG .OR. ITYPEG.EQ.KINTEG .OR.
- + ITYPEG.EQ.KLOGCG .OR. ITYPEG.EQ.KREALG) THEN
- C Specification. Look for dimensioned variables.
- CALL PDIMNS
- ELSE IF (ITYPEG.EQ.KNTRYG) THEN
- C ENTRY. Special instrumentation.
- CALL PNTRYS
- ELSE IF (ITYPEG.EQ.KCGOG) THEN
- C Computed GOTO. Special instrumentation.
- CALL PCGOS(NTOKG-1,NTOKG)
- ELSE IF (ITYPEG.EQ.KAIFG) THEN
- C Arithmetic IF. Special instrumentation.
- CALL PAIFS(NTOKG,NTOK2G)
- ELSE
- C Other types just output
- CALL OUTS
- IF (KEXECG(ITYPEG).EQ.1) SEGMTG = .FALSE.
- END IF
-
- END
- C ----------------------------------------------------------------------
- C
- C P S T O P S - Process STOP statements
- C
-
- SUBROUTINE PSTOPS
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/IO/IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
- INTEGER IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
-
- SAVE /IO/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/ANVNAM/VNAMEG
- CHARACTER*5 VNAMEG
- SAVE/ANVNAM/
-
- IF (SEGMTG) THEN
- C Start segment and output annotated statement
- CALL OUTSGS(NMSEG)
- CALL OUTANS(NMSEG)
- ELSE
- C Output un-annotated statement
- CALL OUTANS(0)
- END IF
- C Output call to wrapup routine instead of 'STOP'
- CALL OUTMSG(' CALL R'//VNAMEG,IODSCR)
- STOPG = .TRUE.
- SEGMTG = .FALSE.
-
- END
- C ----------------------------------------------------------------------
- C
- C R D A S - Build an assertion statement
- C
-
- SUBROUTINE RDAS
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C Character variables and arrays, except for dictionaries & VNAMEG
- INTEGER MAXCMG
- PARAMETER(MAXCMG=30)
- COMMON /CHARC/ IBUFFG,ICARDG,ICOMG,ISTMG,NAMEG
-
- CHARACTER IBUFFG(1326),ICARDG(72),ISTMG(1326)
- CHARACTER*6 NAMEG
- CHARACTER*72 ICOMG(MAXCMG)
-
- SAVE /CHARC/
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.4
- C---------------------------------------------------------
- C
- C TKLAST = LAST TOKEN NUMBER
- C
- INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
- + TDATA ,TDO ,TDIMEN,TELSE ,TELSIF,TEND ,TENDFI,TENDIF,
- + TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF ,TIMPLI,
- + TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
- + TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO ,TWRITE,
- + TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
- + TEQUAL,TCOLON,TLPARN,TRPARN,TLE ,TLT ,TEQ ,TNE ,
- + TGE ,TGT ,TAND ,TOR ,TEQV ,TNEQV ,TNOT ,TSTAR ,
- + TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
- + TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
- + TFMTKD,TENDKD,TERRKD,TKLAST
- PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
- + TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO =10,
- + TDIMEN=11,TELSE =12,TELSIF=13,TEND =14,TENDFI=15,
- + TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
- + TFORMA=21,TGOTO =22,TIF =23,TIMPLI=24,TINQUI=25,
- + TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
- + TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
- + TSTOP =36,TSUBRO=37,TTHEN =38,TTO =39,TWRITE=40,
- + TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
- + TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
- + TLPARN=51,TRPARN=52,TLE =53,TLT =54,TEQ =55,
- + TNE =56,TGE =57,TGT =58,TAND =59,TOR =60,
- + TEQV =61,TNEQV =62,TNOT =63,TSTAR =64,TDSTAR=65,
- + TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
- + TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
- + TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
- + TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/TOKENS/TOKTYP,TOKLEN,TXTPTR,TOKEN,NTOKSS,ISTTXT,ISTPTR,
- + MAXICH
- INTEGER TOKTYP(800),TOKLEN(800),TXTPTR(800),
- + TOKEN,NTOKSS,ISTTXT(1322+800),ISTPTR(800),
- + MAXICH
-
- SAVE /TOKENS/
-
- C
- C TOKTYP = array of token types for current statement
- C TOKLEN = parallel array of lengths of associated text strings
- C TXTPTR = parallel array of pointers into ISTMG character array of text
- C TOKEN = Current token number within statement being processed
- C NTOKSS = Number of tokens in statement
- C ISTTXT = IST text of token as read in before being converted by ZTOKTX
- C ISTPTR = parallel array (to TOKTYP) of pointers into ISTTXT
- C MAXICH = Last character used in ISTTXT array
- C
-
- INTEGER L,ICOL,NULL
- CHARACTER*72 CARD
- EQUIVALENCE (CARD,ICARDG)
-
- INTRINSIC INDEX
-
- *$AS$ (ASSRTG)
- C Dump comment buffer to listing
- CALL DMPCMS
- C Store first part of first assertion card
- ISTMG(1) = '*'
- NSTMG = 1
- C Is assertion within 8 card maximum?
- 100 IF (NSTMG.LT.569) THEN
- C Pick up this card
- ICOL=INDEX(CARD,'$')
- ICOL=ICOL+INDEX(CARD(ICOL+1:72),'$')
- CALL CCOPY(ICARDG(ICOL+1),72-ICOL,ISTMG(NSTMG+1))
- NSTMG=NSTMG+72-ICOL
- C See if assertion complete yet
- CALL BALPRS(1,ICOL)
- IF (ICOL.NE.0) THEN
- C Assertion complete.
- ELSE
- C Assertion incomplete. Keep going if possible.
- CALL READTK
- IF (.NOT.IEOFG .AND. TOKTYP(NTOKSS).EQ.TCMMNT) THEN
- C Next card ok. Keep building this assertion.
- GOTO 100
- ELSE
- C Current assertion bad (no end found).
- CALL ERRORS(5)
- CALL BADAS
- END IF
- END IF
- ELSE
- C Current assertion bad (too long).
- CALL ERRORS(6)
- CALL BADAS
- C Save last card of long assertion.
- C Get token for next cycle
- CALL COMNTS(NULL)
- CALL READTK
- END IF
-
- END
- C ----------------------------------------------------------------------
- C
- C R D O N E S - Summarize current routine on statement type
- C summary file
- C
-
- SUBROUTINE RDONES
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C ROUTINE INSTRUMENTATION FLAGS
- COMMON / INSTC / INST1G, INST2G, INST3G
-
- INTEGER INST1G,INST2G,INST3G
-
- SAVE /INSTC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C KEYWORD ID VARIABLES
- COMMON / KEYSC / KAGOG, KAIFG, KASMTG,
- * KASSNG, KBACKG, KBIFG, KBLOKG,
- * KCALLG, KCFUNG, KCGOG, KCHARG,
- * KCLOSG, KCMPXG, KCOMNG, KCONTG,
- * KDATAG, KDBLEG, KDFUNG, KDIMNG,
- * KDOG, KELSEG, KELSFG, KENDFG,
- * KENDG, KENDIG, KEQIVG, KEXTLG,
- * KFORMG, KIFUNG, KIMPLG, KINQRG,
- * KINSCG, KINTEG, KLFUNG, KLIFG,
- * KLOGCG, KNONEG, KNTRYG, KOPENG,
- * KPARAG, KPAUSG, KPRNTG, KPROGG,
- * KREADG, KREALG, KRETNG, KRFUNG,
- * KSAVEG, KSFUNG, KSTOPG, KSUBRG,
- * KUFUNG, KUGOG, KWINDG, KWRITG,
- * KXFUNG, LASRTG, LCMNTG, LERRG,
- * LLINEG, LSTMTG
-
- INTEGER KAGOG,KAIFG,KASMTG,KASSNG,KBACKG,KBIFG,KBLOKG,KCALLG,
- + KCFUNG,KCGOG,KCHARG,KCLOSG,KCMPXG,KCOMNG,KCONTG,KDATAG,
- + KDBLEG,KDFUNG,KDIMNG,KDOG,KELSEG,KELSFG,KENDFG,KENDG,
- + KENDIG,KEQIVG,KEXTLG,KFORMG,KIFUNG,KIMPLG,KINQRG,KINSCG,
- + KINTEG,KLFUNG,KLIFG,KLOGCG,KNONEG,KNTRYG,KOPENG,KPARAG,
- + KPAUSG,KPRNTG,KPROGG,KREADG,KREALG,KRETNG,KRFUNG,KSAVEG,
- + KSFUNG,KSTOPG,KSUNRG,KUUNG,KUGOG,KWINDG,KWRITG,KXFUNG,
- + LASRTG,LCMNTG,LERRG,LLINEG,LSTMTG
- INTEGER KUFUNG,KSUBRG
-
- SAVE /KEYSC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C MAIN INTEGER STORAGE ARRAYS
- C MAXLBG = Maximum number of DO statement labels per routine
- INTEGER MAXLBG
- PARAMETER(MAXLBG=100)
- COMMON / WORKC / IABEG(201), ICRTNG(200), IPCNTG(75),
- * IRCNTG(75), ISBEG(201), ISCNTG(75), INSTG(250),
- * KEXECG(75), LABG(2,MAXLBG), KTOKG(81)
- INTEGER IABEG,ICRTNG,IPCNTG,IRCNTG,ISBEG,ISCNTG,INSTG,
- + KEXECG,LABG,KTOKG
- SAVE /WORKC/
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/IO/IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
- INTEGER IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
-
- SAVE /IO/
-
-
- INTEGER L
-
- EXTERNAL ZMESS,PUTCH
-
- C Output summary for last segment in routine
- ISCNTG(ITYPEG) = ISCNTG(ITYPEG) + 1
- CALL SGSUMS
- ISCNTG(ITYPEG) = ISCNTG(ITYPEG) - 1
- C Count tokens following 'END' with next routine unless end of file
- C encountered.
- IRCNTG(ITYPEG) = IRCNTG(ITYPEG) + 1
- IF (.NOT.IEOFG) THEN
- IF (NCOMG .GT. 0) THEN
- IRCNTG(LCMNTG) = IRCNTG(LCMNTG) - NCOMG
- IRCNTG(LLINEG) = IRCNTG(LLINEG) - NCOMG
- END IF
- END IF
- C Output record marking end of segment summaries
- CALL ZMESS('**',IODSTS)
- C Output routine summary record
- DO 50 L=1,NTYPEG
- CALL OUTZFI(IRCNTG(L),5,IODSTS)
- IF (MOD(L,16).EQ.0) CALL PUTCH(10,IODSTS)
- 50 CONTINUE
- CALL PUTCH(10,IODSTS)
- C Set routine counts for next routine.
- C Include counts for comments and first ordinary token following 'END'
- DO 100 L=1,NTYPEG
- 100 IRCNTG(L) = 0
- IRCNTG(LCMNTG) = NCOMG
- IRCNTG(LLINEG) = NCOMG
- IRCNTG(ITYPEG) = IRCNTG(ITYPEG) - 1
- C Save data on special function use for this routine
- INSTG(NCRTNG) = 4*INST1G + 2*INST2G + INST3G
- INST1G = 0
- INST2G = 0
- INST3G = 0
-
- END
- C ----------------------------------------------------------------------
- C
- C R D S S - Build a normal statement
-
- SUBROUTINE RDSS
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C Character variables and arrays, except for dictionaries & VNAMEG
- INTEGER MAXCMG
- PARAMETER(MAXCMG=30)
- COMMON /CHARC/ IBUFFG,ICARDG,ICOMG,ISTMG,NAMEG
-
- CHARACTER IBUFFG(1326),ICARDG(72),ISTMG(1326)
- CHARACTER*6 NAMEG
- CHARACTER*72 ICOMG(MAXCMG)
-
- SAVE /CHARC/
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/TOKENS/TOKTYP,TOKLEN,TXTPTR,TOKEN,NTOKSS,ISTTXT,ISTPTR,
- + MAXICH
- INTEGER TOKTYP(800),TOKLEN(800),TXTPTR(800),
- + TOKEN,NTOKSS,ISTTXT(1322+800),ISTPTR(800),
- + MAXICH
-
- SAVE /TOKENS/
-
- C
- C TOKTYP = array of token types for current statement
- C TOKLEN = parallel array of lengths of associated text strings
- C TXTPTR = parallel array of pointers into ISTMG character array of text
- C TOKEN = Current token number within statement being processed
- C NTOKSS = Number of tokens in statement
- C ISTTXT = IST text of token as read in before being converted by ZTOKTX
- C ISTPTR = parallel array (to TOKTYP) of pointers into ISTTXT
- C MAXICH = Last character used in ISTTXT array
- C
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.4
- C---------------------------------------------------------
- C
- C TKLAST = LAST TOKEN NUMBER
- C
- INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
- + TDATA ,TDO ,TDIMEN,TELSE ,TELSIF,TEND ,TENDFI,TENDIF,
- + TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF ,TIMPLI,
- + TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
- + TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO ,TWRITE,
- + TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
- + TEQUAL,TCOLON,TLPARN,TRPARN,TLE ,TLT ,TEQ ,TNE ,
- + TGE ,TGT ,TAND ,TOR ,TEQV ,TNEQV ,TNOT ,TSTAR ,
- + TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
- + TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
- + TFMTKD,TENDKD,TERRKD,TKLAST
- PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
- + TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO =10,
- + TDIMEN=11,TELSE =12,TELSIF=13,TEND =14,TENDFI=15,
- + TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
- + TFORMA=21,TGOTO =22,TIF =23,TIMPLI=24,TINQUI=25,
- + TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
- + TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
- + TSTOP =36,TSUBRO=37,TTHEN =38,TTO =39,TWRITE=40,
- + TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
- + TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
- + TLPARN=51,TRPARN=52,TLE =53,TLT =54,TEQ =55,
- + TNE =56,TGE =57,TGT =58,TAND =59,TOR =60,
- + TEQV =61,TNEQV =62,TNOT =63,TSTAR =64,TDSTAR=65,
- + TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
- + TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
- + TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
- + TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
-
- INTEGER TEXT(134),JUNK,I,L
-
- INTEGER ZTOKTX,LENGTH
- CHARACTER ZCITOC
- EXTERNAL ZTOKTX,LENGTH,ZCITOC
- C
- C Store text of first token
- C
- 100 JUNK=ZTOKTX(TOKTYP(NTOKSS),TOKLEN(NTOKSS),
- + ISTTXT(ISTPTR(NTOKSS)),TEXT)
- L=LENGTH(TEXT)
- DO 200 I=1,L
- 200 ISTMG(NSTMG+I)=ZCITOC(TEXT(I),ISTMG(NSTMG+I))
- TXTPTR(NTOKSS)=NSTMG+1
- NSTMG=NSTMG+L
- C Dump comment buffer
- CALL DMPCMS
- C Read next token
- CALL READTK
- C If everything ok, continue collection
- IF (.NOT.IEOFG .AND. TOKTYP(NTOKSS).NE.TZEOS) GOTO 100
-
- END
- C ----------------------------------------------------------------------
- C
- C R E A D T K - Read a token
- C
-
- SUBROUTINE READTK
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C Character variables and arrays, except for dictionaries & VNAMEG
- INTEGER MAXCMG
- PARAMETER(MAXCMG=30)
- COMMON /CHARC/ IBUFFG,ICARDG,ICOMG,ISTMG,NAMEG
-
- CHARACTER IBUFFG(1326),ICARDG(72),ISTMG(1326)
- CHARACTER*6 NAMEG
- CHARACTER*72 ICOMG(MAXCMG)
-
- SAVE /CHARC/
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.4
- C---------------------------------------------------------
- C
- C TKLAST = LAST TOKEN NUMBER
- C
- INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
- + TDATA ,TDO ,TDIMEN,TELSE ,TELSIF,TEND ,TENDFI,TENDIF,
- + TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF ,TIMPLI,
- + TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
- + TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO ,TWRITE,
- + TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
- + TEQUAL,TCOLON,TLPARN,TRPARN,TLE ,TLT ,TEQ ,TNE ,
- + TGE ,TGT ,TAND ,TOR ,TEQV ,TNEQV ,TNOT ,TSTAR ,
- + TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
- + TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
- + TFMTKD,TENDKD,TERRKD,TKLAST
- PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
- + TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO =10,
- + TDIMEN=11,TELSE =12,TELSIF=13,TEND =14,TENDFI=15,
- + TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
- + TFORMA=21,TGOTO =22,TIF =23,TIMPLI=24,TINQUI=25,
- + TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
- + TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
- + TSTOP =36,TSUBRO=37,TTHEN =38,TTO =39,TWRITE=40,
- + TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
- + TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
- + TLPARN=51,TRPARN=52,TLE =53,TLT =54,TEQ =55,
- + TNE =56,TGE =57,TGT =58,TAND =59,TOR =60,
- + TEQV =61,TNEQV =62,TNOT =63,TSTAR =64,TDSTAR=65,
- + TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
- + TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
- + TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
- + TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/TOKENS/TOKTYP,TOKLEN,TXTPTR,TOKEN,NTOKSS,ISTTXT,ISTPTR,
- + MAXICH
- INTEGER TOKTYP(800),TOKLEN(800),TXTPTR(800),
- + TOKEN,NTOKSS,ISTTXT(1322+800),ISTPTR(800),
- + MAXICH
-
- SAVE /TOKENS/
-
- C
- C TOKTYP = array of token types for current statement
- C TOKLEN = parallel array of lengths of associated text strings
- C TXTPTR = parallel array of pointers into ISTMG character array of text
- C TOKEN = Current token number within statement being processed
- C NTOKSS = Number of tokens in statement
- C ISTTXT = IST text of token as read in before being converted by ZTOKTX
- C ISTPTR = parallel array (to TOKTYP) of pointers into ISTTXT
- C MAXICH = Last character used in ISTTXT array
- C
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/IO/IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
- INTEGER IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
-
- SAVE /IO/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C KEYWORD ID VARIABLES
- COMMON / KEYSC / KAGOG, KAIFG, KASMTG,
- * KASSNG, KBACKG, KBIFG, KBLOKG,
- * KCALLG, KCFUNG, KCGOG, KCHARG,
- * KCLOSG, KCMPXG, KCOMNG, KCONTG,
- * KDATAG, KDBLEG, KDFUNG, KDIMNG,
- * KDOG, KELSEG, KELSFG, KENDFG,
- * KENDG, KENDIG, KEQIVG, KEXTLG,
- * KFORMG, KIFUNG, KIMPLG, KINQRG,
- * KINSCG, KINTEG, KLFUNG, KLIFG,
- * KLOGCG, KNONEG, KNTRYG, KOPENG,
- * KPARAG, KPAUSG, KPRNTG, KPROGG,
- * KREADG, KREALG, KRETNG, KRFUNG,
- * KSAVEG, KSFUNG, KSTOPG, KSUBRG,
- * KUFUNG, KUGOG, KWINDG, KWRITG,
- * KXFUNG, LASRTG, LCMNTG, LERRG,
- * LLINEG, LSTMTG
-
- INTEGER KAGOG,KAIFG,KASMTG,KASSNG,KBACKG,KBIFG,KBLOKG,KCALLG,
- + KCFUNG,KCGOG,KCHARG,KCLOSG,KCMPXG,KCOMNG,KCONTG,KDATAG,
- + KDBLEG,KDFUNG,KDIMNG,KDOG,KELSEG,KELSFG,KENDFG,KENDG,
- + KENDIG,KEQIVG,KEXTLG,KFORMG,KIFUNG,KIMPLG,KINQRG,KINSCG,
- + KINTEG,KLFUNG,KLIFG,KLOGCG,KNONEG,KNTRYG,KOPENG,KPARAG,
- + KPAUSG,KPRNTG,KPROGG,KREADG,KREALG,KRETNG,KRFUNG,KSAVEG,
- + KSFUNG,KSTOPG,KSUNRG,KUUNG,KUGOG,KWINDG,KWRITG,KXFUNG,
- + LASRTG,LCMNTG,LERRG,LLINEG,LSTMTG
- INTEGER KUFUNG,KSUBRG
-
- SAVE /KEYSC/
-
-
- INTEGER STATUS,I,ISAVEL
- CHARACTER*72 CARD
- EQUIVALENCE (CARD,ICARDG)
-
- EXTERNAL ZGETTK,ZITOF
- C
- 100 CONTINUE
- NTOKSS=NTOKSS+1
- MAXICH=MAXICH+1
- CALL ZGETTK(TOKTYP(NTOKSS),TOKLEN(NTOKSS),ISTTXT(MAXICH),TKIDES,
- + STATUS)
- ISTPTR(NTOKSS)=MAXICH
- MAXICH=MAXICH+TOKLEN(NTOKSS)
- IEOFG=STATUS.EQ.-100 .OR. STATUS.EQ.-1 .OR.
- + TOKTYP(NTOKSS).EQ.TZEOF
- C Count input tokens
- IF (.NOT.IEOFG) THEN
- CALL COUNTS(LLINEG)
- C If token a comment, process separately.
- IF (TOKTYP(NTOKSS).EQ.TCMMNT) THEN
- CARD=' '
- CALL ZITOF(ISTTXT(ISTPTR(NTOKSS)),1,72,CARD,.FALSE.)
- CALL COMNTS(ISAVEL)
- C Do not process non-assertion comments
- IF (ISAVEL.EQ.1) THEN
- MAXICH=MAXICH-TOKLEN(NTOKSS)-1
- NTOKSS=NTOKSS-1
- GOTO 100
- END IF
- END IF
- END IF
-
- END
- C ----------------------------------------------------------------------
- C
- C R E A D S S - Input a complete source statement
- C
-
- SUBROUTINE READSS
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.4
- C---------------------------------------------------------
- C
- C TKLAST = LAST TOKEN NUMBER
- C
- INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
- + TDATA ,TDO ,TDIMEN,TELSE ,TELSIF,TEND ,TENDFI,TENDIF,
- + TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF ,TIMPLI,
- + TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
- + TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO ,TWRITE,
- + TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
- + TEQUAL,TCOLON,TLPARN,TRPARN,TLE ,TLT ,TEQ ,TNE ,
- + TGE ,TGT ,TAND ,TOR ,TEQV ,TNEQV ,TNOT ,TSTAR ,
- + TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
- + TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
- + TFMTKD,TENDKD,TERRKD,TKLAST
- PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
- + TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO =10,
- + TDIMEN=11,TELSE =12,TELSIF=13,TEND =14,TENDFI=15,
- + TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
- + TFORMA=21,TGOTO =22,TIF =23,TIMPLI=24,TINQUI=25,
- + TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
- + TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
- + TSTOP =36,TSUBRO=37,TTHEN =38,TTO =39,TWRITE=40,
- + TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
- + TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
- + TLPARN=51,TRPARN=52,TLE =53,TLT =54,TEQ =55,
- + TNE =56,TGE =57,TGT =58,TAND =59,TOR =60,
- + TEQV =61,TNEQV =62,TNOT =63,TSTAR =64,TDSTAR=65,
- + TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
- + TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
- + TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
- + TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/TOKENS/TOKTYP,TOKLEN,TXTPTR,TOKEN,NTOKSS,ISTTXT,ISTPTR,
- + MAXICH
- INTEGER TOKTYP(800),TOKLEN(800),TXTPTR(800),
- + TOKEN,NTOKSS,ISTTXT(1322+800),ISTPTR(800),
- + MAXICH
-
- SAVE /TOKENS/
-
- C
- C TOKTYP = array of token types for current statement
- C TOKLEN = parallel array of lengths of associated text strings
- C TXTPTR = parallel array of pointers into ISTMG character array of text
- C TOKEN = Current token number within statement being processed
- C NTOKSS = Number of tokens in statement
- C ISTTXT = IST text of token as read in before being converted by ZTOKTX
- C ISTPTR = parallel array (to TOKTYP) of pointers into ISTTXT
- C MAXICH = Last character used in ISTTXT array
- C
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C KEYWORD ID VARIABLES
- COMMON / KEYSC / KAGOG, KAIFG, KASMTG,
- * KASSNG, KBACKG, KBIFG, KBLOKG,
- * KCALLG, KCFUNG, KCGOG, KCHARG,
- * KCLOSG, KCMPXG, KCOMNG, KCONTG,
- * KDATAG, KDBLEG, KDFUNG, KDIMNG,
- * KDOG, KELSEG, KELSFG, KENDFG,
- * KENDG, KENDIG, KEQIVG, KEXTLG,
- * KFORMG, KIFUNG, KIMPLG, KINQRG,
- * KINSCG, KINTEG, KLFUNG, KLIFG,
- * KLOGCG, KNONEG, KNTRYG, KOPENG,
- * KPARAG, KPAUSG, KPRNTG, KPROGG,
- * KREADG, KREALG, KRETNG, KRFUNG,
- * KSAVEG, KSFUNG, KSTOPG, KSUBRG,
- * KUFUNG, KUGOG, KWINDG, KWRITG,
- * KXFUNG, LASRTG, LCMNTG, LERRG,
- * LLINEG, LSTMTG
-
- INTEGER KAGOG,KAIFG,KASMTG,KASSNG,KBACKG,KBIFG,KBLOKG,KCALLG,
- + KCFUNG,KCGOG,KCHARG,KCLOSG,KCMPXG,KCOMNG,KCONTG,KDATAG,
- + KDBLEG,KDFUNG,KDIMNG,KDOG,KELSEG,KELSFG,KENDFG,KENDG,
- + KENDIG,KEQIVG,KEXTLG,KFORMG,KIFUNG,KIMPLG,KINQRG,KINSCG,
- + KINTEG,KLFUNG,KLIFG,KLOGCG,KNONEG,KNTRYG,KOPENG,KPARAG,
- + KPAUSG,KPRNTG,KPROGG,KREADG,KREALG,KRETNG,KRFUNG,KSAVEG,
- + KSFUNG,KSTOPG,KSUNRG,KUUNG,KUGOG,KWINDG,KWRITG,KXFUNG,
- + LASRTG,LCMNTG,LERRG,LLINEG,LSTMTG
- INTEGER KUFUNG,KSUBRG
-
- SAVE /KEYSC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/IO/IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
- INTEGER IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
-
- SAVE /IO/
-
-
- NSTMG = 0
- NTOKSS=0
- MAXICH=0
- CALL READTK
- C Is this the first time a token will be read?
- IF (.NOT.CARD1G) THEN
- NCOMG = 0
- C Source program file empty?
- IF (IEOFG) CALL ERRORS(4)
- CARD1G = .TRUE.
- ELSE IF (IEOFG) THEN
- C Output the end-of-file token
- CALL ZTOKWR(TOKTYP(NTOKSS),TOKLEN(NTOKSS),
- + ISTTXT(ISTPTR(NTOKSS)),TKODES)
- RETURN
- END IF
- 100 IF (TOKTYP(NTOKSS).EQ.TCMMNT) THEN
- C Pick up an entire assertion statement
- CALL RDAS
- IF (NSTMG .NE. 0) CALL COUNTS(LASRTG)
- ELSE
- C Pick up an entire normal statement
- CALL RDSS
- IF (NSTMG .NE. 0) CALL COUNTS(LSTMTG)
- END IF
- C If problems during this attempt, try again.
- IF (.NOT.IEOFG .AND. NSTMG.EQ.0) GOTO 100
-
- END
- C ----------------------------------------------------------------------
- C
- C S E G M T S - Start a new segment
- C
-
- SUBROUTINE SEGMTS(SFLAGA)
- LOGICAL SFLAGA
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
-
- IF (.NOT.SEGMTG) THEN
- C Record previous segment activity on statement type summary file, if
- C required
- IF (SFLAGA) CALL SGSUMS
- C Start new segment
- NMSEG = NMSEG + 1
- SEGMTG = .TRUE.
- END IF
-
- END
- C ----------------------------------------------------------------------
- C
- C S F I N D T - Return next special token (not a name or const
- C and skipping parenthesised fields.
- C
-
- INTEGER FUNCTION SFINDT(ITOKA)
- INTEGER ITOKA
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.4
- C---------------------------------------------------------
- C
- C TKLAST = LAST TOKEN NUMBER
- C
- INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
- + TDATA ,TDO ,TDIMEN,TELSE ,TELSIF,TEND ,TENDFI,TENDIF,
- + TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF ,TIMPLI,
- + TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
- + TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO ,TWRITE,
- + TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
- + TEQUAL,TCOLON,TLPARN,TRPARN,TLE ,TLT ,TEQ ,TNE ,
- + TGE ,TGT ,TAND ,TOR ,TEQV ,TNEQV ,TNOT ,TSTAR ,
- + TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
- + TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
- + TFMTKD,TENDKD,TERRKD,TKLAST
- PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
- + TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO =10,
- + TDIMEN=11,TELSE =12,TELSIF=13,TEND =14,TENDFI=15,
- + TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
- + TFORMA=21,TGOTO =22,TIF =23,TIMPLI=24,TINQUI=25,
- + TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
- + TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
- + TSTOP =36,TSUBRO=37,TTHEN =38,TTO =39,TWRITE=40,
- + TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
- + TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
- + TLPARN=51,TRPARN=52,TLE =53,TLT =54,TEQ =55,
- + TNE =56,TGE =57,TGT =58,TAND =59,TOR =60,
- + TEQV =61,TNEQV =62,TNOT =63,TSTAR =64,TDSTAR=65,
- + TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
- + TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
- + TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
- + TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/TOKENS/TOKTYP,TOKLEN,TXTPTR,TOKEN,NTOKSS,ISTTXT,ISTPTR,
- + MAXICH
- INTEGER TOKTYP(800),TOKLEN(800),TXTPTR(800),
- + TOKEN,NTOKSS,ISTTXT(1322+800),ISTPTR(800),
- + MAXICH
-
- SAVE /TOKENS/
-
- C
- C TOKTYP = array of token types for current statement
- C TOKLEN = parallel array of lengths of associated text strings
- C TXTPTR = parallel array of pointers into ISTMG character array of text
- C TOKEN = Current token number within statement being processed
- C NTOKSS = Number of tokens in statement
- C ISTTXT = IST text of token as read in before being converted by ZTOKTX
- C ISTPTR = parallel array (to TOKTYP) of pointers into ISTTXT
- C MAXICH = Last character used in ISTTXT array
- C
-
- INTEGER TMP
-
- SFINDT=ITOKA
- 100 IF (TOKTYP(SFINDT).EQ.TNAME .OR. TOKTYP(SFINDT).EQ.TDCNST .OR.
- + TOKTYP(SFINDT).EQ.TRCNST .OR. TOKTYP(SFINDT).EQ.TPCNST .OR.
- + TOKTYP(SFINDT).EQ.TCCNST .OR. TOKTYP(SFINDT).EQ.THCNST .OR.
- + TOKTYP(SFINDT).EQ.TLCNST) THEN
- SFINDT=SFINDT+1
- GOTO 100
- ELSE IF (TOKTYP(SFINDT).EQ.TLPARN) THEN
- TMP=SFINDT
- CALL BALPRT(TMP,SFINDT)
- SFINDT=SFINDT+1
- GOTO 100
- END IF
-
- END
- C ----------------------------------------------------------------------
- C
- C S G S U M S - Output segment record to segment type summary
- C file
- C
-
- SUBROUTINE SGSUMS
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C CONTROL VARIABLES
- COMMON / CNTRLC / IERRG, IFTYPG, ITYPEG,
- * IUNITG, JERRG, KERRG, LABFLG,
- * LINEG, LTYPEG, NBUFFG, NTOKG,
- * NTOK2G, NTOK3G, NTOK4G, NCOMG,
- * NCRTNG, NDDICG, NEDICG, NLABG,
- * NMASRG, NMSEG, NRDICG, NRTNG,
- * NSTMG, NTREEG, NTYPEG
-
- INTEGER IERRG,IFTYPG,ITYPEG,IUNITG,JERRG,KERRG,LABFLG,LINEG,
- + LTYPEG,NBUFFG,NTOKG,NTOK2G,NTOK3G,NTOK4G,NCOMG,NCRTNG,
- + NDDICG,NEDICG,NLABG,NMASRG,NMSEG,NRDICG,NRTNG,NSTMG,
- + NTREEG,NTYPEG
-
- SAVE /CNTRLC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C LOGICAL VARIABLES
- COMMON / LOGIC / ARITHG, ASSRTG, BLKDTG,
- * CARD1G, CGOTOG, ENTRYG, EXECG,
- * HISTG, IEOFG, IFDOG, INSRTG,
- * MAING, SEGMTG, STOPG, TRACEG,
- * TREEG
- LOGICAL ARITHG, ASSRTG, BLKDTG, CARD1G,
- * CGOTOG, ENTRYG, EXECG, HISTG,
- * IEOFG, IFDOG, INSRTG, MAING,
- * SEGMTG, STOPG, TRACEG, TREEG
-
- SAVE /LOGIC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C MAIN INTEGER STORAGE ARRAYS
- C MAXLBG = Maximum number of DO statement labels per routine
- INTEGER MAXLBG
- PARAMETER(MAXLBG=100)
- COMMON / WORKC / IABEG(201), ICRTNG(200), IPCNTG(75),
- * IRCNTG(75), ISBEG(201), ISCNTG(75), INSTG(250),
- * KEXECG(75), LABG(2,MAXLBG), KTOKG(81)
- INTEGER IABEG,ICRTNG,IPCNTG,IRCNTG,ISBEG,ISCNTG,INSTG,
- + KEXECG,LABG,KTOKG
- SAVE /WORKC/
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/IO/IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
- INTEGER IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
-
- SAVE /IO/
-
-
- INTEGER IOUTL(150),NUML,L,NPAIRL
-
- EXTERNAL PUTCH
-
- C Determine which executable statement types active
- NUML = 0
- DO 110 L=1,NTYPEG
- IF (ISCNTG(L) .EQ. 0) GOTO 110
- IF (KEXECG(L) .EQ. 0) GOTO 100
- C This type was both executable and active in this segment
- NUML = NUML + 2
- IOUTL(NUML-1) = L
- IOUTL(NUML) = ISCNTG(L)
- 100 ISCNTG(L) = 0
- 110 CONTINUE
-
- IF (BLKDTG) RETURN
- C Ensure at least one record output
- IF (NUML .GT. 0) THEN
- NPAIRL = NUML / 2
- ELSE
- NUML = 2
- NPAIRL = 1
- IOUTL(1) = 1
- IOUTL(2) = 0
- END IF
- C Output statistics record for segment to statement type summary file
- CALL OUTZFI(NPAIRL,2,IODSTS)
- DO 115 L=0,NUML-2,2
- CALL OUTZFI(IOUTL(L+1),2,IODSTS)
- CALL OUTZFI(IOUTL(L+2),3,IODSTS)
- 115 CONTINUE
- CALL PUTCH(10,IODSTS)
-
- END
- C ----------------------------------------------------------------------
- C
- C S U M S - Print statement type summary report
- C
-
- SUBROUTINE SUMS(IOUTA)
- INTEGER IOUTA(*)
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C KEYWORD ID VARIABLES
- COMMON / KEYSC / KAGOG, KAIFG, KASMTG,
- * KASSNG, KBACKG, KBIFG, KBLOKG,
- * KCALLG, KCFUNG, KCGOG, KCHARG,
- * KCLOSG, KCMPXG, KCOMNG, KCONTG,
- * KDATAG, KDBLEG, KDFUNG, KDIMNG,
- * KDOG, KELSEG, KELSFG, KENDFG,
- * KENDG, KENDIG, KEQIVG, KEXTLG,
- * KFORMG, KIFUNG, KIMPLG, KINQRG,
- * KINSCG, KINTEG, KLFUNG, KLIFG,
- * KLOGCG, KNONEG, KNTRYG, KOPENG,
- * KPARAG, KPAUSG, KPRNTG, KPROGG,
- * KREADG, KREALG, KRETNG, KRFUNG,
- * KSAVEG, KSFUNG, KSTOPG, KSUBRG,
- * KUFUNG, KUGOG, KWINDG, KWRITG,
- * KXFUNG, LASRTG, LCMNTG, LERRG,
- * LLINEG, LSTMTG
-
- INTEGER KAGOG,KAIFG,KASMTG,KASSNG,KBACKG,KBIFG,KBLOKG,KCALLG,
- + KCFUNG,KCGOG,KCHARG,KCLOSG,KCMPXG,KCOMNG,KCONTG,KDATAG,
- + KDBLEG,KDFUNG,KDIMNG,KDOG,KELSEG,KELSFG,KENDFG,KENDG,
- + KENDIG,KEQIVG,KEXTLG,KFORMG,KIFUNG,KIMPLG,KINQRG,KINSCG,
- + KINTEG,KLFUNG,KLIFG,KLOGCG,KNONEG,KNTRYG,KOPENG,KPARAG,
- + KPAUSG,KPRNTG,KPROGG,KREADG,KREALG,KRETNG,KRFUNG,KSAVEG,
- + KSFUNG,KSTOPG,KSUNRG,KUUNG,KUGOG,KWINDG,KWRITG,KXFUNG,
- + LASRTG,LCMNTG,LERRG,LLINEG,LSTMTG
- INTEGER KUFUNG,KSUBRG
-
- SAVE /KEYSC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/IO/IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
- INTEGER IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
-
- SAVE /IO/
-
-
- INTEGER IFL,IFUNCL,IGOTOL
-
- EXTERNAL ZPTINT,ZOBLNK,PUTCH,ZCHOUT,ZMESS
-
- IFL = IOUTA(KAIFG) + IOUTA(KBIFG) + IOUTA(KLIFG)
- IFUNCL = IOUTA(KCFUNG) + IOUTA(KXFUNG) + IOUTA(KDFUNG) +
- + IOUTA(KIFUNG) + IOUTA(KLFUNG) + IOUTA(KRFUNG) +
- + IOUTA(KUFUNG)
- IGOTOL = IOUTA(KAGOG) + IOUTA(KCGOG) + IOUTA(KUGOG)
-
- CALL ZOBLNK(28,IODSUM)
- CALL ZMESS('STATEMENT TYPE SUMMARY.',IODSUM)
- CALL PUTCH(10, IODSUM)
- CALL ZOBLNK(30,IODSUM)
- CALL ZCHOUT('ASSERTIONS .',IODSUM)
- CALL ZPTINT(IOUTA(LASRTG),5,IODSUM)
- CALL PUTCH(10,IODSUM)
- CALL ZOBLNK(30,IODSUM)
- CALL ZCHOUT('COMMENTS .',IODSUM)
- CALL ZPTINT(IOUTA(LCMNTG),5,IODSUM)
- CALL PUTCH(10,IODSUM)
- CALL ZOBLNK(30,IODSUM)
- CALL ZCHOUT('ERRORS .',IODSUM)
- CALL ZPTINT(IOUTA(LERRG),5,IODSUM)
- CALL PUTCH(10,IODSUM)
- CALL ZOBLNK(30,IODSUM)
- CALL ZCHOUT('TOKENS .',IODSUM)
- CALL ZPTINT(IOUTA(LLINEG),5,IODSUM)
- CALL PUTCH(10,IODSUM)
- CALL ZOBLNK(30,IODSUM)
- CALL ZCHOUT('STATEMENTS .',IODSUM)
- CALL ZPTINT(IOUTA(LSTMTG),5,IODSUM)
- CALL PUTCH(10,IODSUM)
- CALL PUTCH(10,IODSUM)
-
- CALL OUTFM1(IOUTA(KASSNG),IGOTOL,'ASSIGN','GO TO')
- CALL OUTFM1(IOUTA(KBACKG),IOUTA(KAGOG),'BACKSPACE',
- + ' (ASSIGNED)')
- CALL OUTFM1(IOUTA(KBLOKG),IOUTA(KCGOG),'BLOCK DATA',
- + ' (COMPUTED)')
- CALL OUTFM1(IOUTA(KCALLG),IOUTA(KUGOG),'CALL',
- + ' (UNCONDITIONAL)')
- CALL OUTFM1(IOUTA(KCHARG),IFL,'CHARACTER','IF')
- CALL OUTFM1(IOUTA(KCLOSG),IOUTA(KAIFG),'CLOSE',' (ARITHMETIC)')
- CALL OUTFM1(IOUTA(KCOMNG),IOUTA(KBIFG),'COMMON',' (BLOCK)')
- CALL OUTFM1(IOUTA(KCMPXG),IOUTA(KLIFG),'COMPLEX',' (LOGICAL)')
- CALL OUTFM1(IOUTA(KCONTG),IOUTA(KIMPLG),'CONTINUE','IMPLICIT')
- CALL OUTFM1(IOUTA(KDATAG),IOUTA(KINQRG),'DATA','INQUIRE')
- CALL OUTFM1(IOUTA(KDIMNG),IOUTA(KINTEG),'DIMENSION','INTEGER')
- CALL OUTFM1(IOUTA(KDBLEG),IOUTA(KINSCG),'DOUBLE PRECISION',
- + 'INTRINSIC')
- CALL OUTFM1(IOUTA(KDOG),IOUTA(KLOGCG),'DO','LOGICAL')
- CALL OUTFM1(IOUTA(KELSFG),IOUTA(KOPENG),'ELSE IF','OPEN')
- CALL OUTFM1(IOUTA(KELSEG),IOUTA(KPARAG),'ELSE','PARAMETER')
- CALL OUTFM1(IOUTA(KENDFG),IOUTA(KPAUSG),'ENDFILE','PAUSE')
- CALL OUTFM1(IOUTA(KENDIG),IOUTA(KPRNTG),'END IF','PRINT')
- CALL OUTFM1(IOUTA(KENDG),IOUTA(KPROGG),'END','PROGRAM')
- CALL OUTFM1(IOUTA(KNTRYG),IOUTA(KREADG),'ENTRY','READ')
- CALL OUTFM1(IOUTA(KEQIVG),IOUTA(KREALG),'EQUIVALENCE','REAL')
- CALL OUTFM1(IOUTA(KEXTLG),IOUTA(KRETNG),'EXTERNAL','RETURN')
- CALL OUTFM1(IOUTA(KFORMG),IOUTA(KWINDG),'FORMAT','REWIND')
- CALL OUTFM1(IFUNCL,IOUTA(KSAVEG),'FUNCTION','SAVE')
- CALL OUTFM1(IOUTA(KCFUNG),IOUTA(KSTOPG),' CHARACTER','STOP')
- CALL OUTFM1(IOUTA(KXFUNG),IOUTA(KSUBRG),' COMPLEX',
- + 'SUBROUTINE')
- CALL OUTFM1(IOUTA(KDFUNG),IOUTA(KWRITG),' DOUBLE PRECISION',
- + 'WRITE')
- CALL OUTFM1(IOUTA(KIFUNG),IOUTA(KASMTG),' INTEGER',
- + '(ASSIGNMENT STATEMENTS)')
- CALL OUTFM1(IOUTA(KLFUNG),IOUTA(KSFUNG),' LOGICAL',
- + '(STATEMENT FUNCTIONS)')
- CALL OUTFM1(IOUTA(KRFUNG),IOUTA(KNONEG),' REAL',
- + '(UNRECOGNIZED STATEMENTS)')
- CALL OUTFM1(IOUTA(KUFUNG),0,' UNTYPED','-')
-
- END
- C ----------------------------------------------------------------------
- C
- C O U T F M 1 - Output things according to the formats used in
- C the routine SUMS.
- C
-
- SUBROUTINE OUTFM1(VAL1,VAL2,STR1,STR2)
- INTEGER VAL1,VAL2
- CHARACTER*(*) STR1,STR2
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/IO/IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
- INTEGER IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
-
- SAVE /IO/
-
-
- CHARACTER*28 STRING
-
- STRING=STR1
- CALL ZCHOUT(' '//STRING,IODSUM)
- CALL ZPTINT(VAL1,5,IODSUM)
- STRING=STR2
- CALL ZCHOUT(' '//STRING,IODSUM)
- CALL ZPTINT(VAL2,5,IODSUM)
- CALL PUTCH(10,IODSUM)
-
- END
- C ----------------------------------------------------------------------
- C
- C T C O M N S - Insert trace common block instrumentation
- C
-
- SUBROUTINE TCOMNS
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- C Option Settings
- COMMON /OPTSC/ INHSTG,INTRAG,ITHSTG,ITLSTG,ITTRAG,MCIRCG,
- + MTREQG,TIEG,ITRUNG
-
- INTEGER INHSTG,INTRAG,ITHSTG,ITLSTG,ITTRAG,MCIRCG,MTREQG,
- + ITRUNG
- LOGICAL TIEG
-
- SAVE /OPTSC/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/IO/IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
- INTEGER IODINS,IODSTS,IODSUM,IODSCR,TKIDES,TKODES
-
- SAVE /IO/
-
- C---------------------------------------------------------
- C TOOLPACK/1 Release: 2.3
- C---------------------------------------------------------
- COMMON/ANVNAM/VNAMEG
- CHARACTER*5 VNAMEG
- SAVE/ANVNAM/
-
- EXTERNAL ZMESS,ZCHOUT,ZPTINT
-
- CALL ZMESS(' COMMON/D'//VNAMEG//'/ISEG,JVAL,KVAL,NREQ,'//
- + 'LPRE,LPOST,LRANGE,IFLAG,ITTRA',IODINS)
- CALL ZCHOUT(' INTEGER ISEG(',IODINS)
- CALL ZPTINT(MTREQG,4,IODINS)
- CALL ZCHOUT('),JVAL(',IODINS)
- CALL ZPTINT(MTREQG,4,IODINS)
- CALL ZCHOUT('),KVAL(',IODINS)
- CALL ZPTINT(MTREQG,4,IODINS)
- CALL ZMESS('),NREQ,LPRE,LPOST,LRANGE,',IODINS)
- CALL ZMESS(' +IFLAG,ITTRA',IODINS)
- CALL ZMESS(' SAVE/D'//VNAMEG//'/',IODINS)
-
- END
-